Method and system for enabling a script on a first computer to communicate and exchange data with a script on a second computer over a network

ABSTRACT

A method and system for enabling a script on a first computer to communicate and exchange data with a script on a second computer so as to provide access by the script to data typically inaccessible by a script. The method and system enable a first computer to control the Internet navigation of a second computer, and also enable instant messaging between a first computer and a member of a synchronization group. The computers may be connectable with each other over any type of network (e.g., LAN, WAN, intranet, Internet, cellular, etc.).

FIELD OF THE INVENTION

This invention is directed to a method and system for enabling a scripton a first computer to transmit and exchange data with a script on asecond computer over a network.

BACKGROUND OF INVENTION

A script, written in JavaScript, VBScript, or other similar scriptinglanguage, provides a simple way to add certain functionality to a webpage. For example, buttons and scrollbars may be easily added to a webpage using a script. However, the functionality available from a scriptis limited because a script cannot directly access a computer'soperating system. In addition, a first script (script A) on a firstcomputer (computer A) cannot transmit and exchange data with a secondscript (script B) on a second computer (computer B). Thus, a user ofcomputer A cannot share the functionality of script A with one the userof computer B.

SUMMARY OF THE INVENTION

The present invention is directed to a method and system for enabling ascript on a first computer to transmit and exchange data with a scripton a second computer. The computers may be connectable with each otherover any type of network (e.g., LAN, WAN, intranet, Internet, cellular,etc.).

In an embodiment, a first script and a first control are downloaded to afirst computer. Alternatively, scripts and controls may be downloaded toboth a first and second computer, or the scripts may be installed on thecomputer(s) using other now known or hereafter developed methods,techniques, systems, devices, etc. Typically, a user of the computer mayaccess the functionality of a script, and pass data to and receive datafrom the script. A control typically has a predefined functionality (orplurality of functionality), access to other programs on the computer(e.g., operating system, communication program and interface, etc.).

In accordance with an embodiment of the present invention, the firstscript can receive data input from a user of the first computer, and thefirst control has a function defined therein (e.g., a login function),and can communicate with the first script for receiving the data inputby the user. The first control can communicate with a server (i.e.,transmit) and transmit the data received by the first control from thefirst script (i.e., the data entered by the user) to the server. Theserver transmits the data received from the first computer to the secondcomputer for receipt by a second control on the second computer, withthe second control communicating with a second script and transmittingthe data received from the first computer. Thus, the first script canpass data to and effectively control the second script. For example, thefirst script can send a command to the second script instructing thesecond script how to manipulate the Document Object Model (DOM) of anInternet browser window. One example of this might be to control thedisplay of a second computer by displaying a certain advertisement in aweb page being viewed (i.e., being displayed by the computer display asan Internet browser window or an image within a browser window) by the auser of the second computer. To insert an <IMG> tag into the DOM of theweb page being viewed by the second user, the first script transmits(via the first control, server, and second control) data to secondscript instructing the second script to insert a specific image (i.e.,advertisement) into the DOM of the Internet browser window. The firstscript may thus control the second script so that a specificadvertisement (i.e., image) is displayable in the Internet browserwindow being viewed by the second user

By providing communication between the script and control, and betweenthe control and server, the present invention provides advantages overthe prior art. For example, in accordance with the present invention, ascript may now have access to data and functionality of the control suchas, for example, functions typically made available by the control toother applications via a component object model (COM) interface. Thosefunctions and functionality are typically not available to a script.

In another embodiment of the present invention, scripts and controlsenable synchronization of a first and second computer so that the secondcomputer is caused to navigate the Internet (i.e., to move from oneInternet site to another) based upon the Internet navigation of thefirst computer. This embodiment of the present invention enables a userof the first computer to login to a synchronization group, and tosynchronize with a user of the second computer (i.e., to cause the firstand second computers to synchronize with each other). The userrequesting synchronization with another user becomes the “leader”,controlling Internet navigation for all computers having logged in tothe synchronization group. When users of the various computers havelogged in to the synchronization group (i.e., when the computers aresynchronized), the present invention controls the Internet navigation ofthe “follower” computers based on the Internet navigation of the“leader” computer. Users of computers logged in to the synchronizationgroup may send instant messages to each other. Again, a script and acontrol provide the functionality of this embodiment of the presentinvention.

The advantages of the present invention over the prior art are manifest.The present invention combines the simplicity of a script with theflexibility and freedom of a control to improve inter-connectivitybetween and among computers connected in a network and to improve thecontrol available to a user of a computer over other computers.

The invention accordingly comprises the features of construction,combination of elements, and arrangement of parts which will beexemplified in the disclosure herein, and the scope of the inventionwill be indicated in the claims.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawing figures, which are not to scale, and which are merelyillustrative, and wherein like reference numerals depict like elementsthroughout the several views:

FIG. 1 is a schematic block diagram of a first and second computerconnectable to each other via a server and each having a script and acontrol thereon in accordance with an embodiment of the presentinvention;

FIG. 2 is a schematic block diagram of a broadcast configuration of thepresent invention;

FIG. 3 is a schematic block diagram of a first and second computerconnectable to each other via a server and each having an explorer bardisplayable in an Internet browser window and having script, a control,and a browser helper object (BHO) in accordance with an embodiment ofthe present invention;

FIG. 4 is a flow diagram depicting the steps carried out in accordancewith an embodiment of the present invention for a login requestinitiated by a user of the first computer;

FIG. 5 is a flow diagram depicting the steps carried out in accordancewith an embodiment of the present invention for a synchronizationrequest initiated by a user of the first computer;

FIG. 6 is a flow diagram depicting the steps carried out in accordancewith an embodiment of the present invention for a navigation control bya user of the first computer for a user of the second computer;

FIG. 7 is a view of an Internet browser window having an explorer bandprovided in accordance with an embodiment of the present invention andoverlayed on the browser window;

FIG. 8 is a detailed view of the explorer band depicted in FIG. 7;

FIG. 9 is a view of the Internet browser window depicted in FIG. 7 andshowing a login confirmation/rejection message provided in accordancewith an embodiment of the present invention;

FIGS. 10A and 10B respectively depict the view of the Internet browserof a first user requesting synchronization with a second user, and asynchronization request message displayed in the second user's Internetbrowser window in accordance with an embodiment of the presentinvention;

FIGS. 11A and 11B respectively depict navigation by a first user from afirst Internet site to a second Internet site;

FIGS. 12A and 12B respectively depict navigation by a second user from afirst Internet site to a second Internet site and controlled by a firstuser in accordance with an embodiment of the present invention; and

FIGS. 13A and 13B respectively depict an instant message sent by a firstuser and received by a second user in accordance with an embodiment ofthe present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

The present invention is directed to a method and system for enabling ascript on a first computer to communicate and exchange data with ascript on a second computer. The computers may be connectable with eachother over any type of network (e.g., LAN, WAN, intranet, Internet(including the World-Wide Web), cellular, etc.) via a server. Thepresent invention enables a script, such as those written in theJavaScript or VBScript scripting language, running on one computer tocommunicate and exchange data across a network with a script or scriptsrunning on other computers. As used herein, the term “computer” isintended to be construed broadly, and in a non-limiting manner, and toinclude, without limitation and by way of illustration only, anyelectronic device capable of receiving input, processing, storing andproviding output, typically as digital data. A computer may be acomputer of any style, size, and configuration including, withoutlimitation, a server, workstation, desktop, laptop, Internet appliance,notebook, personal digital assistant (PDA), etc. A computer typicallyincludes the following components: a central processing unit (CPU orprocessor) operable in connection with software (e.g., operating system,application, etc.), a disk drive (e.g., floppy, CD-ROM, DVD, etc.),permanent memory (e.g., hard-disk drive, ROM), temporary memory (e.g.,RAM), an input device (e.g., keyboard, mouse, trackball, etc.), anoutput device (e.g., display), and a communication interface (e.g.,modem). It is known to persons skilled in the art that a computer maycomprise some or all of those components, in addition to components notlisted.

Communication between a script and the server in accordance with thepresent invention involves the use of one or more control(s) to handlethe communication between the script and the server. This preferredmethod provides increased functionality and is more robust because ofthe greater flexibility and freedom available via the control. Thecontrol gives the script access to data and functionality that thescript itself would otherwise be prohibited from. The terms“communicate” and “transmit” (and variations thereof) are usedinterchangeably herein to refer to the exchange of data (typicallydigital data) within a single computer (e.g., between and among any of ascript, an application, a control, etc.) and/or between one or morecomputers.

Referring now to the drawings, and with reference for to FIG. 1, aserver 100 is there depicted having connected thereto a first clientcomputer 200 and a second client computer 300. The server 100 andcomputers 200, 300 may comprise a self-contained network (i.e.,comprising no other computers), a part of an intranet, a part of theInternet, or virtually any other type of configuration of network, solong as the functionality of the server 100 and computers 200, 300, isin accordance with embodiments of the present invention, as described inmore detail below. The server 100 contains software to process a request(whether that be the control, the script, or whatever) from the clientcomputer, and determine how to process the request. In some instancesthe server 100 might be required to forward the request to anotherclient computer (see, e.g., FIG. 1), broadcast the request to multipleclient computers (see, e.g., FIG. 2), pass data back to the clientcomputer from which the data was sent, or process the request itself andnot return any data to the client computer.

The functionality of the present invention is provided in part, at leastin the first instance, by the server 100. To provide the functionalityon each client computer, each client computer must connect to theserver, typically via an Internet browser, and download, from the serverto the client computer, certain computer code that may include a script220, 320 and a control 210, 310. A user of the first computer 200, forexample, may access the server 100 via an Internet browser installed onand operable in connection with the first computer 200. Having thusaccessed the server 100, the user of the first computer 200 may cause,or the user may request that the server 100 cause, certain computer codeor software to be downloaded from the server 100 to a memory device ofthe first computer; in particular, any of a script 220 and control 210may be downloaded by the server 100 to the computer 200 for permanentstorage thereon (e.g., on the computer hard disk). In addition oralternatively, one or more scripts may be loaded on the computer 200prior to connection of the computer 200 to the server 100 and prior todownload of the certain computer code or software by the server 100 tothe computer 200. The functionality provided by the present invention isthereafter carried out by the script 220, control 210, and the server100.

While the scripts 220, 320 are preferably downloaded by the server 100to the various client computers 200, 300, they may be loaded on theclient computers 200, 300 using any now known or hereafter developedmethods, devices, systems, etc., form transmitting digital data from onecomputer to another.

It should be noted that in a preferred embodiment of the presentinvention, a script 220 and a control 210 are downloaded by the server100 to the user's computer 200. However, other computer programs, files,software, etc., may be downloaded by the server 100 to the user'scomputer 200 to provide the functionality of the present invention.

The configuration depicted in FIG. 1 provides for communication betweenscripts and data exchange between two computers, while the configurationdepicted in FIG. 2 provides a “broadcast” configuration, in which ascript on a first computer 200 can communicate and exchange data with ascript on a plurality of computers 300, 400, 500.

A script 220 in accordance with the present invention may be written inany suitable programming language, such as a web-based scriptinglanguage like JavaScript or VBScript, as a routine matter of designchoice. Once the script 220, 320 is downloaded to the respectivecomputer 200, 300 from the server 100, the script 220, 320 is preferablyloaded and running on the respective computer 200, 300 when a user ofthe computer activates an Internet browser program (i.e., a program,typically resident on the user's computer, that facilitates navigationof the Internet using Internet addresses (urls)). One way to load thescript 220, 320 is on a web browser through means of a web page thatcontains the script 220, 320.

The script 220, 320 contains a pointer or reference to a control 210,310 that will be handling the communication of data between the script220, 320 and the server 100. One implementation of this could be an HTMLor DHTML based web page that loads an instance of the control 210, 310by use of the “<OBJECT>” tag. This instance of the control 210, 310 canthen be referenced in the script 220, 320 by use of its id, name or anyother relevant application of the Document Object Model (DOM), as amatter of design choice within the scope of the teachings herein. With apointer to the instance of the control 210, 310, the script 220, 320 canthen call any exposed functions in the control 220, 320, and pass anynecessary data from the script 220, 320 to the control 210, 310 asarguments. The present invention thus enables a script running in a webbrowser on one computer to manipulate the DOM of a web browser onanother computer. For example, a first script 220 on a first computer200 can send a command to a second script 320 on a second computer 300instructing the second script 320 how to manipulate the DOM of itsparticular web browser window. One example of this might be to controlthe browser display on a second computer to display a certain ad byinserting an <IMG> tag into the DOM of the web page to which the user ofthe second computer has navigated. The first script 220 would simplysend data to the second script 320 instructing the second script 320 toinsert a specific image into the DOM of the respective web browserwindow. That functionality and level of communication between scripts ofdifferent computers, and control by a script on one computer over ascript on another computer, has heretofore not been available.

The form and type of the data sent from one script to another script canvary based on the application. For example, it might be suitable to sendthe data in an XML format where each piece of data is broken up as anXML element. The types of data sent could be a defined class, aninstance of an object (class), a function call and its appropriatearguments, a data structure, etc.

A control 210, 310 may be software or computer code, written in anyart-recognized programming language, such as for example, C, C++ orJava. A control 210, 310 may be downloaded from the server 100 to eachcomputer 200, 300 upon which a script 220, 320 in accordance with thepresent invention is loaded (i.e., stored in memory (permanent ortemporary) and running. In a preferred embodiment, the control is anActiveX control (the term “control” being user herein to also include anActiveX control). An instance of the control 210, 310 may be created(loaded into a certain memory location) and the script 220, 320maintains a pointer to that instance (memory location). The control210,310 has access to certain functions and thus may expose thosefunctions, such as those made available to other applications via a COMinterface(s). In accordance with the present invention, those functionsexposed by the control may be called by the script 220, 320.Advantageously, the present invention thus provides access by the script220, 320 to functionality (i.e., the function(s) exposed or madeavailable by the control 210, 310) that the script 220, 320 cannotaccess. One example of such a function might be one that receives datafrom the script 220, 320, then passes the data to the server 100, to besubsequently forwarded onto other script(s) on other computer(s).Another example might be a function in the control 210, 310 that returnsa pointer to the an interface such as, for example, the IWebBrowser2interface for the main Internet browser window, to the script 220, 320.By using a control in conjunction with a script in accordance withembodiments of the present invention, the script 220, 320 has access todata to which the control 210, 310 also has access. In the previousexample, that data to which the script 220, 320 now has access is in theform of an object that the script 220, 320 cannot ordinarily access.Currently in DHTML, there is no way for a script to access theIWebBrowser2 interface for an Internet window. However, if a control isloaded, say as a Browser Helper Object (BHO), the control can access apointer to the IWebBrowser2 interface, and later pass this pointer tothe script if requested. The foregoing provides an example of how thepresent invention utilizes the control to provide script access tocontrol data and functionality. Control data may thus be communicatedfrom the control to the script (and from the script to the server andonto another control and script, as described in more detail below).

The control 210, 310 can also call a function(s) in the script 220, 320and pass data to the called function in the script. One method ofaccomplishing this might be for the control to obtain a pointer to theIHTMLWindow2 interface of the window that the script/control is loadedin, and then call “execScript” on that pointer to execute the functionprovided by that script. Another method could be for the control 210,310 to get a pointer to the IHTMLDocument2 interface of the document thescript/control is loaded in and then call “get_Script” functionality ofthe script to retrieve a pointer to an IDispatch interface that receivesa handle to the script engine. With the pointer to that IDispatch,“Invoke” may be called on that pointer to call the desired function inthe script. One example of the control calling a function in the scriptmight be when the control receives data from the server that needs tothen be forwarded to the script. The control can call a function in thescript with the data passed as an argument.

In a preferred embodiment, the control 210, 310 is an ActiveX controlthat provides at least the following functionality: 1) enable dataexchange between the server 100 and a script(s); 2) enable data exchangebetween scripts on different computers (with the data passing throughthe server 100); and 3) provide enhanced functionality to the script byproviding access by the script to the data and functionality of thecontrol.

In the illustrative, non-limiting examples of embodiments of the presentinvention described below and elsewhere herein, it is assumed that thescript has loaded an instance of the ActiveX control in a manner knownin the art (e.g., using the <OBJECT> tag, etc.).

If a script 220 desires to transmit data to the server 100, the script220 would call the appropriate function exposed by the ActiveX controlthat enables data transmission by the ActiveX control to the server 100.For example, if a user of the first computer 200 desires to login to theserver 100 (i.e., login to a particular web site, user group, etc.), theActiveX control might expose a “Log In” function, which requires as dataa username and password. A script 220 could call this “Log In” function,passing in as arguments a username and password to the function. Via theActiveX control, the “Log In” function then calls the appropriatefunction on the server 100, e.g., a “Server Log In” and passes theusername and password received from the script 220 to the “Server LogIn” function. The “Server Log In” function then logs the user in to apredetermined group (e.g., a group of registered users for a particularweb-site, a synchronization group (as described in more detail below),etc.). The server 100 can also transmit data to the script 220 bycalling the appropriate exposed function in the ActiveX control 210.Continuing with the “login” example, the server 100 may transmit anotification to the script 220 that the user who requested a login, hasindeed been logged in. The ActiveX control 210 might expose a “Log InEvent” function which requires a Boolean value of true or false toindicate whether or not the user has been logged in. The server 100would call this function and pass the value true to it when the user hasbeen logged-in. The “Log In Event” function then calls an appropriatefunction in the script 220 (by using “execScript” or “Invoke”, forexample), such as a “Script Confirm Login”, and passes the value true tothe “Script Confirm Login” function. Login confirmation may then bedisplayed to the user of the first computer by the script 220.

In addition to communication between a script and the server 100, thepresent invention also enables communication (i.e., data exchange)between two or more scripts loaded and running on two or more computers,such as depicted in FIG. 2.

An application programming interface (API) enables communication betweenscripts 220, 320 provided on different computers 200, 300. Communicationbetween scripts 220, 320 is implemented by an ActiveX control providedon both computers 200, 300. Preferably two classes are implemented inthe ActiveX control of the present invention to handle the sending ofdata from one script 220 (i.e., the calling script) to another script(s)320 (i.e., the receiving script(s)); more precisely, the calling of afunction in a script on another computer. The RemoteConnection classrepresents a connection between the calling script 220 and the receivingscript(s) 320 (see, e.g., FIG. 1), and is responsible for managing thereceiving script(s), as well as managing the communication of data fromthe sending script to the receiving script(s). It should be noted thateither script 220, 320 depicted in FIG. 1 may be the calling script, andthe description of script 220 as the calling script is merely anillustrative, non-limiting example of an embodiment of the presentinvention. The RemoteConnection class is responsible for managing thereceiving script(s), as well as sending the data to the receivingscripts. The RemoteConnection class exposes: an “AddId” function, whichallows the calling script to add identifiers for script(s) (i.e.,computers) to receive data from the calling script; a “RemoveId”function which allows the calling script to remove identifiers forscript(s); a “BatchMode” function which allows the calling script toturn on a batch send mode, allowing multiple function calls to get sentin one request (such as for a configuration as depicted in FIG. 2); a“SendBatch” which actually sends the batch request; and a“RemoteInterface” function which allows the script access to aRemoteInterface object, such as a function in a control on the remotecomputer. The “RemoteInterface” class represents a pointer to thereceiving script(s), and is responsible for organizing the data(function call and arguments) into a data structure to be sent to thereceiving script(s), and forwarding the function call to theRemoteConnection instance (which then sends this data to the receivingscripts). When an instance of the RemoteConnection class is created, itin turn creates an instance of the RemoteInterface class. When thescript calls a function in another script, it accomplishes this bycalling that function on the RemoteInterface object pointer. For exampleif a first script 220 on a first computer 200 wanted to call the“SendMessage” function in a second script 320 on a second computer 300,the first script 220 would call the “SendMessage” function on theRemoteInterface object pointer, which might be in the form of:RemoteInterfacePtr.SendMessage(msg).

The RemoteInterface object is a COM object that is derived from theIDispatch interface. The “GetIDsOfNames” function and the “Invoke”function in the RemoteInterface class are overloaded. When the scriptcalls the “SendMessage” function on the RemoteInterface, the “ScriptingObject” (the object that contains the code for running and/orinterpreting the scripting language and is the interface between thescript and the application the script is contained in (e.g., browser, MSOffice, etc.)) makes a request to the control's RemoteInterface object“GetIDsOfNames” function (also overloaded), and asks for the dispidassociated with the “SendMessage” call. The overloaded “GetIDsOfNames”creates a new dispid (unless it has one available from an earlier callto SendMessage) and sends it back to the “Scripting Object” which the“Scripting Object” then uses to call the control's RemoteInterfaceobject's “invoke” method (also overloaded). The dispid is passed to thecontrol's “invoke” so the control knows that the request was for the“SendMessage”. The control's “invoke” then creates a data structure thatrepresents the call to “SendMessage” and all of its arguments and passesthis to the receiving script (via the server). When the data is receivedby the receiving ActiveX control(s), these recipient controls must parsethe data structure they have received, and then pass this data ontotheir respective scripts (calling the appropriate function(s) in thescript with the associated arguments).

With general reference to FIG. 1, the following illustrative andnon-limiting example will illustrate how a first script 220 loaded andrunning on a first computer 200 can call a function in a second script320 loaded and running on a second computer 300, e.g., if the firstscript 220 (Script A) desires to call the “Send Message” function on thesecond script 320 (Script B). Script A calls the “NewRemoteConnection”function exposed by the ActiveX control 210 (Control A) on the firstcomputer 200. That function creates an instance of the RemoteConnectionclass, and returns a pointer to this instance to Script A, which thencalls the “AddId” function on the RemoteConnection instance pointer andpasses in the identifier of the user on the second computer 300. The“AddId” function adds this identifier to a list of recipientsidentifiers (i.e., scripts that are going to receive the function call).Script A then calls the “RemoteInterface” function on theRemoteConnection instance pointer. The “RemoteInterface” functionreturns a pointer to an instance of the RemoteInterface class to ScriptA, which then calls the “SendMessage” function on the RemoteInterfacepointer. The “GetIdsOfNames” of the RemoteInterface object is called anda unique identifier is generated and used to fill the “rgdispid”parameter passed to the “Scripting Object” with the generated uniqueidentifier. In a global map, the function name is mapped to the uniqueidentifier. The “Invoke” function gets called, and the “ScriptingObject” uses its map to find the function name that corresponds to the“dispidMember” parameter passed to the “Scripting Object”.RemoteInterface object then creates an XML data structure with thisfunction name, and its arguments, which are passed to the “invoke” callof the RemoteInterface. The data structure is passed to theRemoteConnection instance, which then passes it to Script B via theserver 100. When the data is received by the recipient ActiveX controlon second computer 300, this control parses the XML feed it hasreceived, and then passes this data onto Script B by calling the“SendMessage” function and passing on the appropriate arguments. Here iswhat the code in Script A might look like:

-   -   var conn=xxx.NewRemoteConnection( );    -   conn.AddId(“user 2”);    -   var iface=conn.RemoteInterface( );    -   iface.SendMessage(“Hello!”);

The script 220 operates in a “sandbox” and is thus limited in what itcan do. The control 210 gives the script 220 access to data andfunctionality to which the script 220 would otherwise not have access.The functionality provided by the ActiveX control to the script(s) is aroutine matter of design choice. Any functionality that may be providedvia an ActiveX control may be provided to the script in accordance withthe present invention. For example, a control can be loaded as a BrowserHelper Object (BHO), access a pointer to the IWebBrowser2 interface, andlater pass that pointer onto the script if requested by the script. TheActiveX control could implement a BandObject class, whereby a scriptcould call functions on the ActiveX control to create different types ofband objects. The ActiveX control could implement a local storage classand allow the script secure read/write access to certain local files onthe user's computer. These are some examples of functionalityunavailable to the script alone, but could be provided to it with theuse of an ActiveX control in accordance with the present invention. Itwill be obvious to persons skilled in the art and from the disclosureprovided herein that other functionality may be made available to ascript by a control in accordance with the embodiments of the presentinvention.

In another embodiment of the present invention, a first computer cancontrol the Internet navigation of a second computer. The two (or more)computers are “synchronized” so that as a user of the first computernavigates the Internet from one web page to another, the second computer(i.e., the Internet browser installed on and operable in connection withthe second computer) is caused to navigate the Internet to those sameweb pages. This embodiment of the present invention enables a user of afirst computer to login to a synchronization group maintained in adatabase on the server 100, and to synchronize with a user of a secondcomputer. If the user of the second computer agrees to synchronize withthe user of the first computer, navigation of the Internet by the seconduser is controlled by the navigation of the first user. In addition,this embodiment of the present invention enables users who are “synched”to send instant messages to one another. Although the followingdescription is directed to an embodiment where only a first and seconduser are synchronized, the present invention is not so limited andapplies to any number of computer users, i.e., any size synchronizationgroup.

Referring next to FIGS. 3–12, an embodiment of the present inventionthat enables a user of a first computer to synchronize with a user of asecond computer will now be discussed in detail. When Internet browser(e.g., Microsoft™ Internet Explorer, Netscape Navigator®) is loaded, abrowser window 1000 (FIG. 7) is displayed on the first user's computerdisplay. That browser window 1000 provides an address window 1010 whichdisplays the Internet address (i.e., url) of the Internet web page whichis currently displayed in the browser window 1000. That window 1010 alsoenables the user to enter a different Internet address and display adifferent Internet web page. The Internet browser formats and displaysthe content from each Internet web page on the display of the user'scomputer. When the user causes the Internet browser to load the browserwindow 1000 (which occurs when the user activates the Internet browser(e.g., by clicking on an icon on the Windows desktop) and connects tothe Internet using a particular Internet browser), the present inventioncauses an explorer bar 1100 to be displayed (i.e., overlayed) over thebrowser window 1000 as an HTML page.

As depicted in FIG. 3, the explorer bar 1100 contains a script 220,browser helper object (BHO) control 230, and an instance of an ActiveXcontrol 210. The script 220 provides the look and feel of the explorerbar 1100, as depicted in FIG. 7, for example, including defining ausername window 1110, a password window 1120, a login status window1130, an instant message receive window 1140, an instant message sendwindow 1150, a tools area 1200 having a plurality of pull-down menus(e.g., login, sync, create group, settings, help and exit), and a signin button 1190. It will be obvious to persons skilled in the art thatexplorer bar 1100 of the present invention may be configured for variousother displays and provide various other additional functionality, as aroutine matter of design choice. However, enabling a first user tosynchronize with a second user so as to enable control of Internetnavigation of the second user by the navigation of the first user is anovel and unobvious part of the present invention and that is not merelydirected to the look and feel of the explorer bar 1100. In addition, theinstant message capability provided in accordance with the presentinvention is also a novel an unobvious part of the present invention.

The BHO control 230 can access the DOM of the Internet browser window1000, which provides access for the script 220 to data not typicallyaccessible by a script. Thus, data may be communicated between thescript 220 and the BHO control 230 to the browser window DOM so that thescript 220 effectively communicates directly with the browser windowDOM.

The explorer bar 1100 (which may be an HTML page) has an “<OBJECT>” tagthat creates an instance of the ActiveX control 210 (which is in theform of a dll). Once the explorer bar 1100 is loaded, the script 220 isloaded (more than one script may also be loaded, as a routine matter ofdesign choice), the ActiveX control 210 is created and is now accessibleby the script(s). The interrelationship between and among the variouscomponents of the explorer bar 1110 are depicted in FIG. 3.

To synchronize the Internet navigation of two (or more) computers inaccordance with an embodiment of the present invention, each user mustfirst login to a synchronization group defined in a database of theserver 100. Login is facilitated by the explorer bar 1100, namely, viathe username and password windows 1110, 1120, and the sign in button1190. The login process is depicted in FIG. 4. After entering a usernameand password and selecting (i.e., clicking) the sign in button 1190, asin step 1, the script 220 sends the user username and password asarguments to the login function in the ActiveX control 210, as in step2. The ActiveX control 210 receives the user identification and passworddata from the script 220, and transmits that data to the server 100along with a login identification to notify the server 100 that the databeing transmitted is a request to login, as in step 3. The server 100receives the data from the ActiveX control 210 and, from the loginidentification, determines the data is a login request. Using theusername and password data, the server 100 either confirms or rejectsthe login request (confirms if the username and password are found inthe database provided on the server 100, e.g. a login database, orrejects the request of the username and/or password are not found). Theserver 100 then transmits a login confirmation or rejection to theActiveX control 210, as in step 4. Finally, the ActiveX control 210passes the confirmation or rejection to the script 220, as in step 5, sothat the script is informed that the user has been logged in. The script220 notifies the user that whether the login request has been confirmedor rejected, as in step 6, and displays that via a login responsemessage 1300, as depicted in FIG. 9. The above-described login sequenceand procedure may be carried out by any number of users via any numberof user computers. Thus, although FIG. 1 depicts a two-user/computerconfiguration, and FIG. 2 depicts a four-user/computer configuration,they are provided as illustrative, non-limiting examples of twoembodiments of the present invention.

To enable synchronization of Internet navigation in accordance with anembodiment of the present invention, each user must login, using thesequence and procedure described above. Once each user has been loggedin, one user (User 1) may be the “leader” and control the Internetnavigation of the other user(s), i.e., lead the other user (User 2).User 1 does this by requesting to sync with User 2, as depicted in FIG.5 and FIGS. 10A and 10B. After User 1 enters User 2's username as areceiver in a receiver window 1180, and selects a Request Sync button1160, as in step 1 (FIG. 5), the script 220 creates an XML feed topackage the data (e.g., user 1 name, user 2 name) to be sent onto User 2as in step 2. The XML feed may have the following format:

-   -   <XML>    -   <DATA>    -   <SENDER>User 1's username</SENDER>    -   <SYNC>User 2's username</SYNC>    -   <DATA>    -   </XML>

This XML feed, along with the sender's username (User 1's username) andthe receiver's username (User 2's username), are passed to asynchronization function in the ActiveX control 210, as in step 2 inFIG. 5. The ActiveX control 210 receives that data and transmits it tothe server 100 along with a synchronization identification to notify theserver 100 that the transmitted data is a synchronization request, as instep 3. From the synchronization identification, the server 100identifies the data as a synchronization request, and transmits thatrequest to User 2, provided that User 2 has previously logged in. Morespecifically, the server 100 passes the synchronization request to User2's ActiveX control 310, as in step 4. User 2's ActiveX control 310parses the XML feed it has received from the server 100 and passes thisparsed data to a script 320, as in step 5. The script 320 analyzes thedata, and realizes that it is a request to synchronize with User 1.Based on this, User 2's script 320 then displays a synchronizationrequest message 1400, as depicted in FIG. 10B and as in step 6 of FIG.5.

If User 2 has agreed to synchronize with User 1, by selecting the OKbutton 1410, wherever User 1 navigates on the Internet using his/herInternet browser, User 2 will follow, i.e., User 2's Internet browserwill be caused to navigate to the same Internet web pages as User 1.Controlling the navigation of User 2 by User 1's navigation is depictedin FIG. 6 and FIGS. 11A, 11B, 12A and 12B. User 1 first navigates to aweb page, such as depicted in FIG. 11A. The browser helper object (BHO)control 230 provided on User 1's computer receives a NavigateComplete2message from Internet browser because the main Internet browser windowhas navigated to a new web page, as in step 1 of FIG. 6. The BHO control230 also receives arguments with the NavigateComplete2 message (such asthe dispatch id, url, etc.). The BHO control 230 generates a navigationidentification and passes that identification and the arguments receivedwith the NavigateComplete2 message to a script 220. The script 220 thenextracts any data it needs from these arguments (such as the url, etc.)and creates an XML feed to package the data it needs to send to User 2,as in step 3 in FIG. 6. The XML feed may have the following format:

-   -   <XML>    -   <DATA>    -   <SENDER>User 1's username</SENDER>    -   <URL>Url</URL>    -   </DATA>    -   </XML>

This XML feed, along with the sender's username (User 1's username) andthe receiver's username (User 2's username) are passed to asynchronization function (e.g., “SyncIt”) in the ActiveX control 210, asin step 3. The ActiveX control 210 receives that data and transmits itto the server 100 along with a synchronization identification (e.g.,“WebSync” identification) to notify the server 100 that the data beingtransmitted is synchronization data. The server 100 receives the dataand synchronization identification and interprets the data assynchronization data. The server 100 transmits the data to User 2'scomputer 300 via the ActiveX control 310, as in step 5 of FIG. 6. User2's ActiveX control 310 parses the XML feed it has received from theserver 100 and passes this parsed data (the url, etc.) to a script 320,as in step 6 The script 320 analyzes the data, and identifies it assynchronization data. Based on this, the script 320 then queries theActiveX control 310 for a pointer to the BHO control's IWebBrowser2interface (this is necessary because the script 320 does not have accessto the IWebBrowser2 interface), as in step 7. In order to cause User 2'sInternet browser to navigate to the url at which User 1 has navigated,it is necessary to obtain the main Internet browser window'sIWebBrowser2 interface, to which the BHO control 330 has access. Toachieve this, it is necessary to use the ActiveX control 310 as anintermediary between the script 320 and the BHO control 330, because thescript 320 only has a pointer to an instance of the ActiveX control 310,not a pointer to the BHO control 330. It should be noted that the script320 could have obtained a pointer to the BHO control 330 by requesting apointer directly from the ActiveX control 310. Once the IWebBrowser2pointer has been returned to the script 320 by the BHO control 330 viathe ActiveX control 310, the script 320 calls the Navigate2 method onthe IWebBrowser2 pointer and passes the url it received from the ActiveXcontrol 310 as an argument, as in step 8. User 2's Internet browserwindow is then caused to navigate to the same url to which that User 1navigated.

Navigation control as just described in accordance with an embodiment ofthe present invention is also depicted in FIGS. 11A, 11B, 12A and 12B.In FIG. 11A, a browser window 1000 displays a web page associated with aparticular url. When User 1 navigates to a different url, the web pageassociated with that different url is displayed in the browser window1000, as depicted in FIG. 11B. FIGS. 12A and 12B and temporally relatedto FIGS. 11A and 11B, respectively. In FIG. 11A, User 2's Internetbrowser causes a web page associated with a particular url to bedisplayed in a browser window 1000. In FIG. 12B, User 2's Internetbrowser is caused to navigate to the web page to which User 1 has justnavigated.

The present invention also enables User 1 to send an instant message toUser 2, or to any other synchronized user. The explorer bar 1100provides an instant message receive window 1140 and an instant messagesend window 1150, as depicted in FIG. 13A. To send an instant message toUser 2, User 1 types a message in the instant message send window 1150,and selects a send button 1152. The script providing the instant messagefunctionality creates an XML feed to package the data to be sent to User2. The XML feed may have the following format:

-   -   <XML>    -   <DATA>    -   <SENDER>User 1's username</SENDER>    -   <MSG>Message</MSG>    -   </DATA>    -   </XML>

This XML feed, along with the sender's username (User 1's username) andthe receiver's username (User 2's username) are passed to asynchronization function (e.g., a “SyncIt” function) in the ActiveXcontrol. The ActiveX control receives that data and transmits it to theserver 100 along with a synchronization identification to notify theserver 100 that it is a synchronization message. The server 100interprets the data as a synchronization message, and passes the data tothe user identified in the data (i.e., User 2) provided that that useris logged into the synchronization group. More specifically, the server100 transmits that data to User 2's ActiveX control., which parses theXML feed it has received and passes this parsed data (the instantmessage, etc.) to a script. The script analyzes the data, and identifiesit is an instant message, and causes the message to be displayed in theinstant message receive window 1140 using an IFrame on User 2's explorerbar 1100.

It should be noted that while the present invention has been describedterms of a single script and ActiveX control on each user's computer,that is but one embodiment of the present invention. Alternativelycontemplated by and within the scope and spirit of the present inventionare multiple scripts and/or ActiveX controls on each user's computer.

It has also been disclosed herein that certain software is downloadedfrom the server 100 to each user' computer to provide the variousscript(s), control(s) and functionality of the present invention.Alternate embodiments of providing the script(s), control(s) andfunctionality of the present invention are also contemplated. Suchalternate embodiments include, by way of non-limiting example, CD-ROMfor direct installation on the user's computer.

Moreover, the network via which the users are connected to the serverneed not be the Internet. The present invention also contemplates anytype and configuration of network, including intranets, cellular,satellite, and any other means for interconnecting a plurality ofcomputers for communication therebetween and thereamong.

Thus, while there have been shown and described and pointed outfundamental novel features of the invention as applied to preferredembodiments thereof, it will be understood that various omissions andsubstitutions and changes in the form and details of the disclosedinvention may be made by those skilled in the art without departing fromthe spirit of the invention. It is the intention, therefore, to belimited only as indicated by the scope of the claims appended hereto.

1. A method of enabling a first computer to communicate and exchangedata with a second computer, the first computer and the second computereach having a browser and being in communication with each other via anetwork, said method comprising the steps of: downloading, to the firstcomputer, computer code comprising a first script operable in connectionwith the first computer for accessing a function of a first controlloaded on the first computer for operation in conjunction with saidfirst computer browser, the first script being further operable forreceiving data input by a user of the first computer and for causing thefirst control to communicate with a server and to transmit the datainput by the user to the server, wherein the first script and the firstcontrol are separate components; enabling the user of the first computerto communicate with the second computer to present a request forsynchronization with the user of the first computer, the second computerhaving a second script and a second control loaded thereon and operablein connection therewith for operation in conjunction with said secondcomputer browser, wherein the second script and the second control areseparate components; enabling the user of the second computer to agreeto synchronize with the user of the first computer; enabling the user ofthe first computer to synchronize with the user of the second computer;controlling Internet navigation of the second computer based uponInternet navigation of the first computer, wherein the first script andthe first control and the second script and the second control areindependent from Web pages that are displayed on the first computer andthe second computer; and causing the server to transmit the datareceived from the first script to the second computer for receipt by thesecond control.
 2. A method as recited by claim 1, wherein the computercode further comprises the first control.
 3. A method as recited byclaim 1, wherein the first control comprises an ActiveX control.
 4. Amethod as recited by claim 1, wherein the first script can display dataoutput to the user of the first computer.
 5. A method as recited byclaim 1, wherein the first script can send data to and receive data fromthe first control.
 6. A method as recited by claim 1, wherein the firstscript can call the function of the first control.
 7. A method asrecited by claim 6, wherein the first script can send data to andreceive data from the function of the first control.
 8. A method asrecited by claim 1, wherein the first script is operable in connectionwith the first computer by opening a Web page containing the firstscript.
 9. A method as recited by claim 1, wherein the server hasdefined in a database thereon a synchronization group, and wherein thefunction of the first control comprises: a login function to enable theuser of the first computer to login to a synchronization group; asynchronization function to enable the user of the first computer tosynchronize with a member of the synchronization group; and a navigationfunction to enable control of the Internet navigation of a computer ofthe member of the synchronization group based upon the Internetnavigation of the first computer.
 10. A method as recited by claim 9,wherein the function of the first control further comprises an instantmessage function to enable a user of the first computer to send aninstant message to a member of the synchronization group.
 11. A methodof enabling a first computer to communicate and exchange data with asecond computer, the first computer and the second computer each havinga browser and being in communication with each other via a network, saidmethod comprising the steps of: downloading, to the first computer,first computer code comprising a first script operable in connectionwith the first computer for accessing a function of a first controlloaded on the first computer for operation in conjunction with saidfirst computer browser, the first script being further operable forreceiving data input by a user of the first computer and for causing thefirst control to communicate with a server and to transmit the datainput by the user to the server, wherein the first script and the firstcontrol are separate components; downloading, to the second computer,second computer code comprising a second script operable in connectionwith the second computer for accessing a function of a second controlloaded on the second computer for operation in conjunction with saidsecond computer browser, the second script being further operable forreceiving data input by a user of the second computer, wherein thesecond script and the second control are separate components; enablingthe user of the first computer to communicate with the second computerto present a request for synchronization with the user of the firstcomputer; enabling the user of the second computer to agree tosynchronize with the user of the first computer; enabling the user ofthe first computer to synchronize with the user of the second computer;controlling Internet navigation of the second computer based uponInternet navigation of the first computer, wherein the first script andthe first control and the second script and the second control areindependent from Web pages that are displayed on the first computer andthe second computer; and causing the server to transmit the datareceived from the first script to the second computer for receipt by thesecond control.
 12. A method as recited by claim 11, wherein the firstcomputer code further comprises the first control.
 13. A method asrecited by claim 12, wherein the first control comprises an ActiveXcontrol.
 14. A method as recited by claim 11, wherein the secondcomputer code further comprises the second control.
 15. A method asrecited by claim 14, wherein the second control comprises an ActiveXcontrol.
 16. A method as recited by claim 11, wherein the first scriptcan display data output to the user of the first computer, and whereinthe second script can display data output to the user of the secondcomputer.
 17. A method as recited by claim 11, wherein the first scriptcan send data to and receive data from the first control, and whereinthe second script can send data to and receive data from the secondcontrol.
 18. A method as recited by claim 11, wherein the first scriptcan call the function of the first control.
 19. A method as recited byclaim 18, wherein the first script can send data to and receive datafrom the function of the first control, and wherein the second scriptcan send data to and receive data from the function of the secondcontrol.
 20. A method as recited by claim 11, wherein the first scriptis operable in connection with the first computer by opening a Web pagecontaining the first script, and wherein the second script is operablein connection with the second computer by opening a Web page containingthe second script.
 21. A method as recited by claim 11, wherein theserver has defined in a database thereon a synchronization group, andwherein the function of the first control comprises: a login function toenable the user of the first computer to login to a synchronizationgroup; a synchronization function to enable the user of the firstcomputer to synchronize with a member of the synchronization group; anda navigation function to enable control of the Internet navigation of acomputer of the member of the synchronization group based upon theInternet navigation of the first computer; and wherein the function ofthe second control comprises: a login function to enable the user of thesecond computer to login to the synchronization group; a synchronizationfunction to enable the user of the second computer to synchronize with amember of the synchronization group; and a navigation function to enablecontrol of the Internet navigation of the computer of a member of thesynchronization group based upon the Internet navigation of the secondcomputer.
 22. A method as recited by claim 21, wherein the function ofthe first control further comprises an instant message function toenable a user of the first computer to send an instant message to amember of the synchronization group, and wherein the function of thesecond control further comprises an instant message function to enable auser of the second computer to send an instant message to a member ofthe synchronization group.
 23. A method of enabling a first computer tosynchronize with a second computer so that the second computer is causedto navigate the Internet based upon Internet navigation of the firstcomputer, the first computer and the second computer each having abrowser and being in communication with each other via a network, saidmethod comprising the steps of: enabling the user of the first computerto communicate with the second computer to present a request forsynchronization with the user of the first computer, wherein the firstcomputer includes a first control for operation in conjunction with saidfirst computer browser, the first computer further including a firstscript, wherein the first script and the first control are separatecomponents, and wherein the second computer includes a second controlfor operation in conjunction with said second computer browser, thesecond computer further including a second script, wherein the secondscript and the second control are separate components; enabling the userof the second computer to agree to synchronize with the user of thefirst computer; enabling the user of the first computer to synchronizewith the user of the second computer; and controlling Internetnavigation of the second computer based upon Internet navigation of thefirst computer, wherein the first script and the first control and thesecond script and the second control are independent from Web pages thatare displayed on the first computer and the second computer.
 24. Amethod as recited by claim 23, further comprising the step of enablingthe user of the first computer to send an instant message to the user ofthe second computer.
 25. A method as recited by claim 24, wherein saidstep of enabling the user of the first computer to send an instantmessage comprises: providing a script that accepts data input from theuser of the first computer and creates an XML feed of the data; andproviding an ActiveX control defining a synchronization function thatgenerates a synchronization identification and that receives the XMLfeed from the script, the ActiveX control transmitting the XML feed andsynchronization identification to the server.
 26. A method as recited byclaim 23, further comprising the step of enabling the user of the firstcomputer to login, said step comprising: providing a script that acceptsdata input from the user of the first computer; and providing an ActiveXcontrol defining a login function that generates a login identificationand that receives the data input to the script from the user of thefirst computer, the ActiveX control transmitting the data input andlogin identification to the server, the ActiveX control receiving loginconfirmation or rejection data from the server and passing the loginconfirmation or rejection data to the script.
 27. A method as recited byclaim 23, wherein said step of enabling the user of the first computerto synchronize comprises: providing a script that accepts data inputfrom the user of the first computer and creates an XML feed of the data;and providing an ActiveX control defining a synchronization functionthat generates a synchronization identification and that receives theXML feed from the script, the ActiveX control transmitting the XML feedand synchronization identification to the server.
 28. A method asrecited by claim 27, wherein Internet navigation is carried out by theuser of the first computer in connection with an Internet browser, andwherein said step of controlling the navigation comprises: providing abrowser helper object (BHO) control for receiving a navigation messagefrom the Internet browser when the user of the first computer navigatesfrom a first Internet Web page to a second Internet Web page; providinga script for receiving the navigation message from the BHO control andfor creating an XML feed of the navigation message; and providing anActiveX control defining a synchronization function that generates asynchronization identification and that receives the XML feed from thescript, the ActiveX control transmitting the XML feed andsynchronization identification to the server to control the Internetnavigation of the second computer based upon Internet navigation of thefirst computer.
 29. A method as recited by claim 28, wherein thenavigation message comprises a uri for the second Internet Web page. 30.A method as recited by claim 23, further comprising the step of enablingthe user of the second computer to login to a synchronization group. 31.A method as recited by claim 30, wherein said step of enabling the userof the second computer to login comprises: providing a script thataccepts data input from the user of the second computer; and providingan ActiveX control defining a login function that generates a secondlogin identification and that receives the data input to the script fromthe user of the second computer, the ActiveX control transmitting thedata input and second login identification to the server, the ActiveXcontrol receiving login confirmation or rejection data from the serverand passing the login confirmation or rejection data to the script. 32.A method as recited by claim 23, wherein said step of enabling the userof the second computer to synchronize comprises: providing a script thataccepts data input from the user of the second computer and creates anXML feed of the data; and providing an ActiveX control defining asynchronization function that generates a synchronization identificationand that receives the XML feed from the script, the ActiveX controltransmitting the XML feed and synchronization identification to theserver.
 33. A method as recited by claim 23, further comprising the stepof enabling the user of the second computer to send an instant messageto the user of the first computer.
 34. A method recited by claim 33,wherein said step of enabling the user of the second computer to send aninstant message comprises: providing a script that accepts data inputfrom the user of the second computer and creates an XML feed of thedata; and providing an ActiveX control defining a synchronizationfunction that generates a synchronization identification and thatreceives the XML feed from the script, the ActiveX control transmittingthe XML feed and synchronization identification to the server.
 35. Asystem for enabling a first computer to communicate and exchange datawith a second computer, the first computer and the second computer eachhaving a browser and being in communication with each other via anetwork, the second computer having a second script and a second controlloaded thereon and operable in connection therewith for operation inconjunction with said second computer browser, wherein the second scriptand the second control are separate components, said system comprising aprocessor provided on the server and operable in connection withsoftware loaded on the server, said processor downloading, from theserver to the first computer, first computer code comprising a firstscript operable in connection with the first computer for accessing afunction of a first control loaded on the first computer for operationin conjunction with said first computer browser, wherein the firstscript and the first control are separate components, the first scriptbeing further operable for receiving data input by a user of the firstcomputer and for causing the first control to communicate with theserver and to communicate the data input by the user to the server, saidprocessor being further operable in connection with the software tocause the server to transmit the data received from the first script tothe second computer for receipt by the second control, said processorbeing further operable in connection with the software enable the userof the first computer to communicate with the second computer to presenta request for synchronization with the user of the first computer,enable the user of the second computer to agree to synchronize with theuser of the first computer, enable the user of the first computer tosynchronize with the user of the second computer, and control Internetnavigation of the second computer based upon Internet navigation of thefirst computer, wherein the first script and the first control and thesecond script and the second control are independent from Web pages thatare displayed on the first computer and the second computer.
 36. Asystem as recited by claim 35, wherein the server has defined in adatabase thereon a synchronization group, and wherein the function ofthe first control comprises: a login function to enable the user of thefirst computer to login to the synchronization group; a synchronizationfunction to enable the user of the first computer to synchronize with aember of the synchronization group; and a navigation function to enablecontrol of the Internet navigation of a computer of a member of thesynchronization group based upon the Internet navigation of the firstcomputer.
 37. A system as recited by claim 36, wherein the function ofthe first control further comprises and instant message function toenable the user of the first computer to send an instant message to amember of the synchronization group.
 38. A system as recited by claim35, wherein the first computer code further comprises the first control.39. A system as recited by claim 38, wherein the second control is anActiveX control.
 40. A system as recited by claim 35, wherein the firstscript is operable in connection with the first computer by opening aWeb page containing the first script.
 41. A system as recited by claim35, said processor being further operable in connection with thesoftware for downloading, from the server to the second computer, secondcomputer code comprising a second script operable in connection with thesecond computer for accessing a function of a second control loaded onthe second computer, the second script being further operable forreceiving data input by a user of the second computer.
 42. A system asrecited by claim 41, wherein the server has defined in a databasethereon a synchronization group, and wherein the function of the secondcontrol comprises: a login function to enable the user of the secondcomputer to login to the synchronization group; a synchronizationfunction to enable the user of the second computer to synchronize with amember of the synchronization group; and a navigation function to enablecontrol of the Internet navigation of a computer of a member of thesynchronization group based upon the Internet navigation of the secondcomputer.
 43. A system as recited by claim 42, wherein the function ofthe second control further comprises an instant message function toenable the user of the second computer to send an instant message to amember of the synchronization group.
 44. A system as recited by claim41, wherein the second computer code further comprises the secondcontrol.
 45. A system as recited by claim 44, wherein the second controlis an ActiveX control.
 46. A system as recited by claim 41, wherein thesecond script is operable in connection with the second computer byopening a Web page containing the second script.
 47. A system as recitedby claim 41, wherein the first script is operable in connection with thefirst computer by opening a Web page containing the first script, andwherein the second script is operable in connection with the secondcomputer by opening a Web page containing the second script.
 48. Asystem for enabling a first computer to synchronize with a secondcomputer so that the second computer is caused to navigate the Internetbased upon Internet navigation of the first computer, the first computerand the second computer each having a browser and being in communicationwith each other via a network, said system comprising: a processor beingoperable in connection with software to enable the user of the firstcomputer to communicate with the second computer to present a requestfor synchronization with the user of the first computer, wherein thefirst computer includes a first control for operation in conjunctionwith said first computer browser, the first computer further including afirst script, wherein the first script and the first control areseparate components, and wherein the second computer includes a secondcontrol for operation in conjunction with said second computer browser,the second computer further including a second script, wherein thesecond script and the second control are separate components; saidprocessor being further operable in connection with software to enablethe user of the second computer to agree to synchronize with the user ofthe first computer; said processor being further operable in connectionwith software to provide synchronization functionality to enable theuser of the first computer to synchronize with the user of the secondcomputer; and said processor being further operable in connection withsoftware to provide navigation functionality to control Internetnavigation of the second computer based upon Internet navigation of thefirst computer, wherein the first script and the first control and thesecond script and the second control are independent from Web pages thatare displayed on the first computer and the second computer.
 49. Asystem as recited by claim 48, said processor being further operable inconnection with software to enable the user of the first computer tosend an instant message to a member of the synchronization group.
 50. Asystem as recited by claim 48, said processor being further operable inconnection with software to: provide a script that accepts data inputfrom the user of the first computer; and provide an ActiveX controldefining a login function that generates a login identification and thatreceives the data input from the user of the first computer, saidActiveX control transmitting the data and login identification to theserver, said ActiveX control receiving login confirmation or rejectiondata from the server and passing the login confirmation or rejectiondata to said script.
 51. A system as recited by claim 48, said processorbeing further operable in connection with software to: provide a scriptthat accepts data input from the user of the first computer and createsan XML feed of the data; and provide an ActiveX control defining asynchronization function that generates a synchronization identificationand that receives the XML feed from said script, said ActiveX controltransmitting the XML feed and synchronization identification to theserver.
 52. A system as recited by claim 48, wherein Internet navigationis carried out by the user of the first computer in connection with anInternet browser, said processor being further operable in connectionwith software to: provide a browser helper object (BHO) control forreceiving a navigation message from the Internet browser when the userof the first computer navigates from a first Internet Web page to asecond Internet Web page; provide a script for receiving the navigationmessage from the BHO control and for creating an XML feed of thenavigation message; and provide an ActiveX control defining asynchronization function that generates a synchronization identificationand that receives the XML feed from said script, said ActiveX controltransmitting the XML feed and synchronization identification to theserver to control the Internet navigation of the second computer basedupon Internet navigation of the first computer.
 53. A system as recitedby claim 52, wherein the navigation message comprises a url for thesecond Internet Web page.
 54. A system as recited by claim 48, saidprocessor being further operable in connection with software to: providea script that accepts data input from the user of the first computer andcreates an XML feed of the data; and provide an ActiveX control defininga synchronization function that generates a synchronizationidentification and that receives the XML feed from said script, saidActiveX control transmitting the XML feed and synchronizationidentification to the server.
 55. A system as recited by claim 48, saidprocessor being further operable in connection with software to enablethe user of the second computer to login to the synchronization group.56. A system as recited by claim 48, said processor being furtheroperable in connection with software to: provide a script that acceptsdata input from the user of the second computer; and provide an ActiveXcontrol defining a login function that generates a login identificationand that receives the data input from the user of the second computer,said ActiveX control communicating the data and login identification tothe server, said ActiveX control receiving login confirmation orrejection data from the server and passing the login confirmation orrejection data to said script.
 57. A system as recited by claim 48, saidprocessor being further operable in connection with software to enablethe user of the second computer to synchronize with a member of thesynchronization group.
 58. A system as recited by claim 57, saidprocessor being further operable in connection with software to: providea script that accepts data input from the user of the second computerand creates an XML feed of the data; and provide an ActiveX controldefining a synchronization function that generates a synchronizationidentification and that receives the XML feed from said script, saidActiveX control transmitting the XML feed and synchronizationidentification to the server.
 59. A system as recited by claim 48, saidprocessor being further operable in connection with software to enablethe user of the second computer to send an instant message to a memberof the synchronization group.
 60. A system recited by claim 59, saidprocessor being further operable in connection with software to: providea script that accepts data input from the user of the second computerand creates an XML feed of the data; and provide an ActiveX controldefining a synchronization function that generates a synchronizationidentification and that receives the XML feed from said script, saidActiveX control transmitting the XML feed and synchronizationidentification to the server.
 61. A method of synchronously followingthe network navigation of a first computer by at least a secondcomputer, the first computer and the second computer each having abrowser and being in communication with each other via a network, saidmethod comprising the steps of: downloading, to the first computer,computer code comprising a first script, wherein the script is writtenin a Web based scripting language, operable in connection with the firstcomputer for accessing a function of a first control for operation inconjunction with said first computer browser, wherein the control iswritten in a programming language and is compiled, the control beingloaded on the first computer, the first script being further operablefor receiving data input by a user of the first computer and for causingthe first control to communicate with a server and to transmit the datainput by the user to the server, wherein the first script and the firstcontrol are separate components; enabling the user of the first computerto communicate with the second computer to present a request forsynchronization with the user of the first computer, the second computerhaving a second script and a second control loaded thereon and operablein connection therewith for operation in conjunction with said firstcomputer browser, wherein the second script and the second control areseparate components; enabling the user of the second computer to agreeto synchronize with the user of the first computer; enabling the user ofthe first computer to synchronize with the user of the second computer;controlling Internet navigation of the second computer based uponInternet navigation of the first computer, wherein the first script andthe first control and the second script and the second control areindependent from Web pages that are displayed on the first computer andthe second computer; and causing the server to transmit the datareceived from the first script to the second computer for receipt by thesecond control.
 62. A method as recited by claim 61, wherein thecomputer code further comprises the first control.
 63. A method asrecited by claim 61, wherein the first control comprises an ActiveXcontrol.
 64. A method as recited by claim 61, wherein the first scriptcan display data output to the user of the first computer.
 65. A methodas recited by claim 61, wherein the first script can send data to andreceive data from the first control.
 66. A method as recited by claim61, wherein the first script can call the function of the first control.67. A method as recited by claim 66, wherein the first script can senddata to and receive data from the function of the first control.
 68. Amethod as recited by claim 61, wherein the first script is operable inconnection with the first computer by opening a Web page containing thefirst script.
 69. A method as recited by claim 61, wherein the serverhas defined in a database thereon a synchronization group, and whereinthe function of the first control comprises: a login function to enablethe user of the first computer to login to a synchronization group; asynchronization function to enable the user of the first computer tosynchronize with a member of the synchronization group; and a navigationfunction to enable control of the Internet navigation of a computer ofthe member of the synchronization group based upon the Internetnavigation of the first computer.
 70. A method as recited by claim 69,wherein the function of the first control further comprises an instantmessage function to enable a user of the first computer to send aninstant message to a member of the synchronization group.
 71. A methodof synchronously following the network navigation of a first computer bya second computer, the first computer and the second computer eachhaving a browser and being in communication with each other via a serverin a network, said method comprising the steps of: downloading, to thefirst computer, computer code comprising a first script, wherein thescript is written in a Web based scripting language, operable inconnection with the first computer for accessing a function of a firstcontrol for operation in conjunction with said first computer browser,wherein the control is written in a programming language and iscompiled, loaded on the first computer, the first script being furtheroperable for receiving data input by a user of the first computer andfor causing the first control to communicate with the server and totransmit the data input by the user to the server, wherein the firstscript and the first control are separate components; defining in adatabase in the server a synchronization group, and wherein the functionof the first control comprises; a login function to enable the user ofthe first computer to login to the synchronization group; asynchronization function to enable the user of the first computer tosynchronize with a member of the synchronization group; a navigationfunction to enable control of the Internet navigation of a computer ofthe member of the synchronization group based upon the Internetnavigation of the first computer; enabling the user of the firstcomputer to communicate with the second computer to present a requestfor synchronization with the user of the first computer, the secondcomputer having a second script and a second control loaded thereon andoperable in connection therewith for operation in conjunction with saidfirst computer browser, wherein the second script and the second controlare separate components; enabling the user of the second computer toagree to synchronize with the user of the first computer; enabling theuser of the first computer to synchronize with the user of the secondcomputer; controlling Internet navigation of the second computer basedupon Internet navigation of the first computer, wherein the first scriptand the first control and the second script and the second control areindependent from Web pages that are displayed on the first computer andthe second computer; and causing the server to transmit the datareceived from the first script to the second computer for receipt by thesecond control.
 72. A method of enabling a first computer to communicateand exchange data with at least a second computer, the first computerand the second computer each having a browser and being in communicationwith each other via a network, said method comprising the steps of:downloading, to the first computer, computer code comprising a firstscript operable in connection with the first computer for accessing afunction of a first control loaded on the first computer for operationin conjunction with said first computer browser, the first script beingfurther operable for receiving data input by a user of the firstcomputer and for causing the first control to communicate with a serverand to transmit the data input by the user to the server, wherein thefirst script and the first control are separate components; enabling theuser of the first computer to communicate with the second computer topresent a request to couple with the user of the first computer, thesecond computer having a second script and a second control loadedthereon and operable in connection therewith for operation inconjunction with said second computer browser, wherein the second scriptand the second control are separate components; enabling the user of thesecond computer to agree to couple with the user of the first computer;enabling the user of the first computer to couple with the user of thesecond computer; controlling Internet navigation of the second computerbased upon Internet navigation of the first computer, wherein the firstscript and the first control and the second script and the secondcontrol are independent from Web pages that are displayed on the firstcomputer and the second computer; and causing the server to transmit thedata received from the first script to the second computer for receiptby the second control.
 73. A method as recited by claim 72, wherein thecomputer code further comprises the first control.
 74. A method asrecited by claim 73, wherein the first control comprises an ActiveXcontrol.
 75. A method as recited by claim 73, wherein the first scriptcan display data output to the user of the first computer.
 76. A methodas recited by claim 73, wherein the first script can send data to andreceive data from the first control.
 77. A method as recited by claim73, wherein the first script can call the function of the first control.78. A method as recited by claim 77, wherein the first script can senddata to and receive data from the function of the first control.
 79. Amethod as recited by claim 73, wherein the first script is operable inconnection with the first computer by opening a Web page containing thefirst script.
 80. A method as recited by claim 73, wherein the serverhas defined in a database thereon a coupling group, and wherein thefunction of the first control comprises: a login function to enable theuser of the first computer to login to a coupling group; and a couplingfunction to enable the user of the first computer to couple with amember of the coupling group.
 81. A method as recited by claim 80,wherein the function of the first control further comprises a navigationfunction to enable control of Internet navigation of a computer of themember of the coupling group based upon the Internet navigation of thefirst computer.
 82. A method as recited by claim 80, wherein thefunction of the first control further comprises an instant messagefunction to enable a user of the first computer to send an instantmessage to a member of the coupling group.